package py.una.pol.ii.is2.domain.taller;

import java.io.Serializable;
import java.math.BigInteger;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import py.una.pol.ii.is2.domain.flota.PlantillaMantenimiento;

/**
 * @author mbenitez
 * @date 03/05/2009
 */
@Entity
@Table(name = "detalle_orden_mantenimiento_plantilla")
@NamedQueries({@NamedQuery(name = "DetalleOrdenMantenimientoPlantilla.findAll", query = "SELECT d FROM DetalleOrdenMantenimientoPlantilla d"), @NamedQuery(name = "DetalleOrdenMantenimientoPlantilla.findByDeopCod", query = "SELECT d FROM DetalleOrdenMantenimientoPlantilla d WHERE d.deopCod = :deopCod"), @NamedQuery(name = "DetalleOrdenMantenimientoPlantilla.findByDeopCostoManoObra", query = "SELECT d FROM DetalleOrdenMantenimientoPlantilla d WHERE d.deopCostoManoObra = :deopCostoManoObra"), @NamedQuery(name = "DetalleOrdenMantenimientoPlantilla.findByDeopCostoInsumos", query = "SELECT d FROM DetalleOrdenMantenimientoPlantilla d WHERE d.deopCostoInsumos = :deopCostoInsumos"), @NamedQuery(name = "DetalleOrdenMantenimientoPlantilla.findByDeopEstado", query = "SELECT d FROM DetalleOrdenMantenimientoPlantilla d WHERE d.deopEstado = :deopEstado")})
public class DetalleOrdenMantenimientoPlantilla implements Serializable {
    private static final long serialVersionUID = 1L;
    // constantes de la entidad
    public static final Integer estadoEjecutado = 1;
    public static final Integer estadoPendiente = 0;
    @Id
    @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="deop_generator")
    @SequenceGenerator(name="deop_generator", sequenceName="detalle_orden_mantenimiento_plantilla_deop_cod_seq", allocationSize=1)
    @Basic(optional = false)
    @Column(name = "deop_cod")
    private Integer deopCod;
    @Basic(optional = false)
    @Column(name = "deop_costo_mano_obra")
    private BigInteger deopCostoManoObra;
    @Column(name = "deop_costo_insumos")
    private BigInteger deopCostoInsumos;
    @Column(name = "deop_estado")
    private Integer deopEstado;
    @OneToMany(cascade = CascadeType.PERSIST, mappedBy = "deoiDetalleOrden")
    private Collection<DetalleOrdenMantenimientoInsumo> detalleOrdenMantenimientoInsumoCollection;
    @JoinColumn(name = "deop_cod_orden", referencedColumnName = "orma_cod")
    @ManyToOne(optional = false)
    private OrdenMantenimiento deopCodOrden;
    @JoinColumn(name = "deop_plantilla", referencedColumnName = "plma_cod")
    @ManyToOne(optional = false)
    private PlantillaMantenimiento deopPlantilla;

    public DetalleOrdenMantenimientoPlantilla() {
    }

    public DetalleOrdenMantenimientoPlantilla(Integer deopCod) {
        this.deopCod = deopCod;
    }

    public DetalleOrdenMantenimientoPlantilla(Integer deopCod, BigInteger deopCostoManoObra) {
        this.deopCod = deopCod;
        this.deopCostoManoObra = deopCostoManoObra;
    }

    public Integer getDeopCod() {
        return deopCod;
    }

    public void setDeopCod(Integer deopCod) {
        this.deopCod = deopCod;
    }

    public BigInteger getDeopCostoInsumos() {
        return deopCostoInsumos;
    }

    public void setDeopCostoInsumos(BigInteger deopCostoInsumos) {
        this.deopCostoInsumos = deopCostoInsumos;
    }

    public BigInteger getDeopCostoManoObra() {
        return deopCostoManoObra;
    }

    public void setDeopCostoManoObra(BigInteger deopCostoManoObra) {
        this.deopCostoManoObra = deopCostoManoObra;
    }

    public Integer getDeopEstado() {
        return deopEstado;
    }

    public void setDeopEstado(Integer deopEstado) {
        this.deopEstado = deopEstado;
    }

    public Collection<DetalleOrdenMantenimientoInsumo> getDetalleOrdenMantenimientoInsumoCollection() {
        return detalleOrdenMantenimientoInsumoCollection;
    }

    public void setDetalleOrdenMantenimientoInsumoCollection(Collection<DetalleOrdenMantenimientoInsumo> detalleOrdenMantenimientoInsumoCollection) {
        this.detalleOrdenMantenimientoInsumoCollection = detalleOrdenMantenimientoInsumoCollection;
    }

    public OrdenMantenimiento getDeopCodOrden() {
        return deopCodOrden;
    }

    public void setDeopCodOrden(OrdenMantenimiento deopCodOrden) {
        this.deopCodOrden = deopCodOrden;
    }

    public PlantillaMantenimiento getDeopPlantilla() {
        return deopPlantilla;
    }

    public void setDeopPlantilla(PlantillaMantenimiento deopPlantilla) {
        this.deopPlantilla = deopPlantilla;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (deopCod != null ? deopCod.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof DetalleOrdenMantenimientoPlantilla)) {
            return false;
        }
        DetalleOrdenMantenimientoPlantilla other = (DetalleOrdenMantenimientoPlantilla) object;
        if ((this.deopCod == null && other.deopCod != null) || (this.deopCod != null && !this.deopCod.equals(other.deopCod))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "py.una.pol.ii.is2.dao.flota.DetalleOrdenMantenimientoPlantilla[deopCod=" + deopCod + "]";
    }

}
